library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_signed.all;

ENTITY Banco_Registradores is
PORT(
	Reg_a_ser_lido_1: in std_logic_vector(4 downto 0);
	Reg_a_ser_lido_2: in std_logic_vector(4 downto 0);
	Reg_a_ser_escrito: in std_logic_vector(4 downto 0);
	Dado_a_ser_escrito: in std_logic_vector(31 downto 0);
	EscReg: in std_logic;
	Dado_lido_1: out std_logic_vector(31 downto 0);
	Dado_lido_2: out std_logic_vector(31 downto 0));
	
end;

architecture behavior of Banco_Registradores is
	type banco_reg is array(31 downto 0) of std_logic_vector(31 downto 0);
	signal bloco_registradores: banco_reg;
	signal posEntrada1,posEntrada2,posEscrita: integer;
begin
		posEntrada1 <= conv_integer(Reg_a_ser_lido_1);
		posEntrada2 <= conv_integer(Reg_a_ser_lido_2);
		Dado_lido_1 <= bloco_registradores(posEntrada1);
		Dado_lido_2 <= bloco_registradores(posEntrada2);
		
		
		bloco_registradores(posEscrita) <= Dado_a_ser_escrito when (posEscrita /= 0) else
							   "00000000000000000000000000000000";
		
		posEscrita <= conv_integer(Reg_a_ser_escrito) when EscReg = '1' else
				    0;
			    

	

				   		
	
end behavior;